package 基础.Format类;

public class SimpleDateFormat类 {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根

	}

}

SimpleDateFormat函数的继承关系：
java.lang.Object
   |
   +----java.text.Format
           |
           +----java.text.DateFormat
                   |
                   +----java.text.SimpleDateFormat


构造函数：
	SimpleDateFormat()
	SimpleDateFormat(String pattern)
	SimpleDateFormat(String pattern, Locale locale)
	SimpleDateFormat(String pattern, DateFormatSymbols locale)
String str="今天是yyyy-MM-dd E hh:mm:ss，是yyyy年的第DD天，在该月是第dd天"

1、为什么要使用SimpleDateFormat？

在Java中，如果我们想获取当前时间，一般会使用Date类的无参构造函数，如下所示，我们获取到当前时间并输出：
import java.util.Date;

public class SimpleDateFormatDemo {
    public static void main(String[] args) {
        Date currentTime = new Date();
        System.out.println(currentTime); // 输出：Mon Feb 18 10:24:30 CST 2019
    }
}

此时我们会发现， 输出的格式并不是我们预期的格式，一般情况下，我们希望的格式都是类似于2019-02-18，2019-02-18 10:24:30，2019/02/18这
样的，此时我们就需要用到java.text.SimpleDateFormat来自定义格式。

2.使用format()方法将日期转换为字符串

使用format()方法，我们可以将日期类型转换为自己自定义的字符串格式，如2019-02-18，2019/02/18，2019-02-18 10:24:30等，自定义格式
如下表所示：

格式    释义	     举例
yyyy   年        2019
MM     月         02
dd     日         18
HH  小时(24小时制)  13，下午一点
mm	分钟           53
ss	秒             42
SSS	毫秒          629
w	年中的周数	     50
W	月份中的周数	 02
D	年中的天数	     344
d	月份中的天数	 10
F	月份中的星期	 02
E	星期中的天数	 星期四、Thu
a	AM/PM标记	 下午、PM
H	一天中的小时数(0~23)	21
k	一天中的小时数(1~24)	21
K	am/pm中的小时数(0~11)	09
h	am/pm中的小时数(1~12)	09
m	小时中的分钟数	31
s	分钟中的秒数	08
S	毫秒数	716

如果你设置Locale的话，会有不同的显示格式，比如如果设置Locale.ENGLISH，E会显示为英文格式，a显示为AM或PM
Date date = new Date();
SimpleDateFormat format = new SimpleDateFormat("今天是yyyy-MM-dd E hh:mm:ss，是yyyy年的第DD天，在该月是第dd天");
System.out.println(format.format(date));
将会输出：今天是2015-12-10 星期四 09:38:16，是2015年的第344天，在该月是第10天


import java.text.SimpleDateFormat;

import java.util.Date;

 

public class SimpleDateFormatDemo {

    public static void main(String[] args) {

        Date currentTime = new Date();

        System.out.println(currentTime);    // Mon Feb 18 13:53:50 CST 2019

 

        SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");

        SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("yyyy-MM-dd");

        SimpleDateFormat simpleDateFormat3 = new SimpleDateFormat("yyyy/MM/dd");

 

        System.out.println(simpleDateFormat1.format(currentTime));  // 输出2019-02-18 13:53:50.629

        System.out.println(simpleDateFormat2.format(currentTime));  // 输出2019-02-18

        System.out.println(simpleDateFormat3.format(currentTime));  // 输出2019/02/18

    }

}

3.使用parse()方法将字符串转换为日期
在实际开发过程中，我们经常需要将字符串转换为日期类型，以进行后续操作，此时可以使用parse()

方法，但需要注意：如果字符串与指定的格式不匹配，会报java.text.ParseException异常。

























![snipaste_20190218_141555](E:\临时\20190218\snipaste_20190218_141555.png)package java核心及工具类.Format类;

 

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Date;

 

public class SimpleDateFormatDemo {

    public static void main(String[] args) {

 

        try {

            SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm");

 

            String strDate1 = "2019-02-18 13:58";

            String strDate2 = "2019-02-18";

 

            Date date1 = simpleDateFormat1.parse(strDate1);

            System.out.println(date1);

            Date date2 = simpleDateFormat1.parse(strDate2);

            System.out.println(date2);

        } catch (ParseException e) {

            e.printStackTrace();

        }

    }

}

运行结果如下图所示：

由此我们可以看到，strDate1格式匹配能正常转换为Date类型，而strDate2由于格式不匹配，抛出java.text.ParseException，正是因为如此，以上的代码才必须包括在try,catch语句中，否则IDEA会提示错误，代码也编译不通过，如下图所示：

